package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

type ContentListItem struct {
	Id          int    `json:"id"`
	Name        string `json:"name"`
	Content     string `json:"content"`
	UpdateTime  string `json:"updateTime"`
	IsDirectory bool   `json:"isDirectory"`
}

type Response struct {
	Code    int                `json:"code"`
	Message string             `json:"message"`
	Data    []ContentListItem  `json:"data"`
}

func main() {
	// 测试获取所有内容（categoryId=-1，includeContent=true）
	fmt.Println("=== 测试1: 获取所有内容（包含内容） ===")
	testGetContentList(-1, true)

	// 测试获取所有内容（categoryId=-1，includeContent=false）
	fmt.Println("\n=== 测试2: 获取所有内容（不包含内容） ===")
	testGetContentList(-1, false)

	// 测试获取特定分类内容（categoryId=1，includeContent=true）
	fmt.Println("\n=== 测试3: 获取分类1的内容（包含内容） ===")
	testGetContentList(1, true)
}

func testGetContentList(categoryId int, includeContent bool) {
	url := fmt.Sprintf("http://localhost:8080/api/v1/content/list/%d?includeContent=%t", categoryId, includeContent)
	fmt.Printf("请求URL: %s\n", url)

	resp, err := http.Get(url)
	if err != nil {
		fmt.Printf("请求失败: %v\n", err)
		return
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("读取响应失败: %v\n", err)
		return
	}

	fmt.Printf("状态码: %d\n", resp.StatusCode)

	var response Response
	err = json.Unmarshal(body, &response)
	if err != nil {
		fmt.Printf("解析JSON失败: %v\n", err)
		fmt.Printf("原始响应: %s\n", string(body))
		return
	}

	fmt.Printf("响应码: %d\n", response.Code)
	fmt.Printf("响应消息: %s\n", response.Message)
	fmt.Printf("数据项数量: %d\n", len(response.Data))

	// 检查每个item是否都有有效的ID
	for i, item := range response.Data {
		fmt.Printf("项目 %d: ID=%d, Name=%s, IsDirectory=%t", i+1, item.Id, item.Name, item.IsDirectory)
		if item.Id == 0 {
			fmt.Printf(" ❌ 警告: ID为0!")
		} else {
			fmt.Printf(" ✅ ID有效")
		}
		if includeContent {
			if item.Content != "" {
				fmt.Printf(", Content长度=%d", len(item.Content))
			} else {
				fmt.Printf(", Content为空")
			}
		} else {
			if item.Content == "" {
				fmt.Printf(", Content正确为空")
			} else {
				fmt.Printf(", ❌ 警告: Content应该为空但不为空")
			}
		}
		fmt.Println()
	}
}